/**
    * 从storage中获取用户信息数据
    * callback回调函数 会传入两个参数。 第一个参数是否获取成功，第二个是获取成功的数据或者错误信息
    *
    */
function _getStorageUserInfo(callback) {
    var options = {
        key: 'wx_user_info',
        success: res => callback && callback(true, res.data),
        fail: res => callback && callback(false, res)
    };
    wx.getStorage(options);
}

/**
 * 调用wx.getUserInfo方法获取用户信息数据
 * callback回调函数 会传入两个参数。 第一个参数是否获取成功，第二个是获取成功的数据或者错误信息
 */
function _getUserInfo(callback) {
    var options = {
        success: res => callback && callback(true, res.userInfo),
        fail: res => callback && callback(false, res)
    };
    wx.getUserInfo(options);
}

/**
 * 把用户信息存储到storage中
 * @param userInfo 用户信息
 */
function _setStorageUserInfo(userInfo) {
    var options = {
        key: 'wx_user_info',
        data: userInfo
    };
    wx.setStorage(options);
}

/**
 * 获取用户信息
 * 如果用户没授权回调函数会第一个参数是false，否则会是true
 * @param {*} callback 
 */
function getUserInfo(callback) {
    _getStorageUserInfo(function (success, userInfo) {
        if (success) {
            callback && callback(true, userInfo);
        } else {
            _getUserInfo(function (success, userInfo) {
                if (success) {
                    callback && callback(true, userInfo);
                    _setStorageUserInfo(userInfo);
                } else {
                    callback && callback(false, userInfo);
                }
            })
        }
    })
}

export default getUserInfo;